﻿using System;
using System.Web;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;

/// <summary>
/// Summary description for TecnicoDAO
/// </summary>
public class TecnicoDAO : Banco
{
    public Tecnico Tecnico { get; set; }

    public TecnicoDAO()
    {

    }

    /// <summary>
    /// Busca Técnico do banco.
    /// </summary>
    /// <param name="Codigo">Codigo do técnico a ser buscado.</param>
    public TecnicoDAO(string Login)
    {
        Tecnico = new Tecnico();
        MySqlConnection conection = new MySqlConnection(conexao);
        MySqlCommand comando = new MySqlCommand("SELECT nome, email, ramal, login FROM tecnicos WHERE (login = '" + Login + "')", conection);

        MySqlDataReader dtreader;
        conection.Open();
        dtreader = comando.ExecuteReader();
        if (dtreader.HasRows)
        {
            while (dtreader.Read())
            {
                Tecnico.Nome = Convert.ToString(dtreader.GetValue(1));
                Tecnico.Email = Convert.ToString(dtreader.GetValue(2));
                Tecnico.Ramal = Convert.ToString(dtreader.GetValue(3));
                Tecnico.Login = Convert.ToString(dtreader.GetValue(4));
            }
        }
        conection.Close();
    }

    /// <summary>
    /// Persiste tecnico em banco.
    /// </summary>
    /// <returns>Status da transação.</returns>
    public bool Salvar()
    {
        return Comando("INSERT INTO tecnicos (nome, email, ramal, login)" +
        "VALUES ('" + Tecnico.Nome + "', '" + Tecnico.Email + "', '" + Tecnico.Ramal + "', '" + Tecnico.Login.ToLower() + "')");
    }

    /// <summary>
    /// Verifica se um login da rede é um tecnico do sistema.
    /// </summary>
    /// <returns>Status da transação.</returns>
    public void VerificarRedirecionar()
    {
        string LoginTecnico = HttpContext.Current.User.Identity.Name.ToString().ToLower();
        if (LoginTecnico == "" || LoginTecnico == "ceee" || LoginTecnico == "administrador" || !VerificaExiste("SELECT login FROM tecnicos", LoginTecnico))
            HttpContext.Current.Response.Redirect("~/Erros/Tecnico.aspx");
    }

    /// <summary>
    /// Mesmo método acima, só que retorna o status.
    /// </summary>
    /// <returns>True se for técnico, false se não for.</returns>
    public bool Verificar()
    {
        string LoginTecnico = HttpContext.Current.User.Identity.Name.ToString().ToLower();
        if (LoginTecnico == "" || LoginTecnico == "ceee" || LoginTecnico == "administrador" || !VerificaExiste("SELECT login FROM tecnicos", LoginTecnico))
            return false;
        else
            return true;
    }

    /// <summary>
    /// Altera tecnico no banco.
    /// </summary>
    /// <returns>Status da transação.</returns>
    public bool Alterar()
    {
        return Comando("UPDATE tecnicos SET nome ='" + Tecnico.Nome + "', email ='" + Tecnico.Email + "', ramal ='" + Tecnico.Ramal + "', login ='" + Tecnico.Login.ToLower() + "' WHERE (login = " + Tecnico.Login + ")");
    }

    /// <summary>
    /// Apagar tecnico do banco.
    /// </summary>
    /// <returns>Status da transação.</returns>
    public bool Apagar()
    {
        return Comando("DELETE FROM tecnicos WHERE (login = '" + Tecnico.Login + "'SS)");
    }

    /// <summary>
    /// Popula DropDownList com técnicos cadastrados no sistema.
    /// </summary>
    /// <param name="Ddl">Id da dropdown.</param>
    public void DropDownList(DropDownList Ddl)
    {
        DropDownList(Ddl, "SELECT login, nome FROM tecnicos ORDER BY login");
    }

    public Tecnico Detalhes(int Codigo)
    {
        MySqlConnection conection = new MySqlConnection(conexao);
        MySqlCommand comando = new MySqlCommand("SELECT login, nome, email, ramal "+
        " FROM tecnicos WHERE (codigo = "+Codigo+" )", conection);

        MySqlDataReader dtreader;
        conection.Open();
        dtreader = comando.ExecuteReader();

        Tecnico t = new Tecnico();

        if (dtreader.HasRows)
        {
            while (dtreader.Read())
            {
                t.Login = dtreader["login"].ToString();
                t.Nome = dtreader["nome"].ToString();
                t.Email = dtreader["email"].ToString();
                t.Ramal = dtreader["ramal"].ToString();
            }
        }
        conection.Close();

        return t;
    }
}